1 /***
2 * QuiltCollectorImpl
3 *
4 * This is a convienience class to assist in
5 * implementing the QuiltCollector interface.
6 *
7 * You will need to provide an implementation
8 * of "reset()" however.
9 */
10
11 package junit.quilt.framework;
12
13 import java.util.Map;
14 import java.util.HashMap;
15 import java.util.Set;
16 import java.util.HashSet;
17 import java.util.Iterator;
18
19 public abstract class QuiltCollectorImpl
20 extends Object
21 implements QuiltCollector
22 {
23 // NOTE:
24 // For Ball94, Segments aren't stored here.
25 // it overrides "getAll(cover)" to create
26 // the results on the fly.
27
28 private Map segments = new HashMap();
29 // CAPABILITY X SET( SEGMENTS )
30
31 protected QuiltCollectorImpl( String capabilities[] ) {
32 for (int i = 0; i < capabilities.length; i++) {
33 segments.put( capabilities[i],
34 new HashSet() );
35 }
36 }
37
38 protected void addSegment( String coverage,
39 CoverageSegment segment )
40 {
41 Set segs = (Set) segments.get( coverage );
42 segs.add( segment );
43 }
44
45 protected void removeSegment( String coverage,
46 CoverageSegment segment )
47 {
48 Set segs = (Set) segments.get( coverage );
49 segs.remove( segment );
50 }
51
52 protected Set findCovered( Set segs ) {
53 Set RC = new HashSet();
54
55 Iterator i = segs.iterator();
56 while (i.hasNext()) {
57 CoverageSegment seg = (CoverageSegment) i.next();
58 if (seg.getNumVisits() > 0) RC.add( seg );
59 }
60
61 return RC;
62 }
63
64 public Set getCovered( String coverage ) {
65 return findCovered( getAll( coverage ) );
66 }
67
68 protected Set findUncovered( Set segs ) {
69 Set RC = new HashSet();
70
71 Iterator i = segs.iterator();
72 while (i.hasNext()) {
73 CoverageSegment seg = (CoverageSegment) i.next();
74 if (seg.getNumVisits() == 0) RC.add( seg );
75 }
76 return RC;
77 }
78
79 public Set getUncovered( String coverage ) {
80 return findUncovered( getAll( coverage ));
81 }
82
83 /***
84 * getAll - Returns the set of all CoverageSegments
85 * for a particular coverage.
86 *
87 * It is possible that the coverage segments returned
88 * can change from call to call. (Ball94 overrides
89 * this method, because it is difficult to seperate
90 * the values.)
91 */
92 public Set getAll( String coverage )
93 {
94 Set RC = new HashSet( (Set) segments.get(coverage) );
95 return RC;
96 }
97
98 public Set getCapabilities() {
99 return segments.keySet();
100 }
101
102 public Map getSummary() {
103 Map RC = new HashMap();
104 Iterator i = segments.keySet().iterator();
105
106 while (i.hasNext()) {
107 String coverage = (String) i.next();
108 Set all = getAll( coverage );
109 Set covered = findCovered( all );
110 float value = (float) ((1.0 * covered.size()) /
111 (1.0 * all.size()));
112 RC.put( coverage, new Float( value ) );
113 }
114
115 return RC;
116 }
117 }
This page was automatically generated by Maven